package com.whfc.safety.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.safety.dto.*;
import com.whfc.safety.param.*;

import java.util.List;

/**
 * @Description 危大工程
 * @Author hw
 * @Date 2021-08-16 11:11
 * @Version 1.0
 */
public interface SafetyDangerService {

    /**
     * 危大字典列表
     *
     * @return
     * @throws BizException
     */
    List<SafetyDangerDictDTO> dictList() throws BizException;


    /**
     * 危大字典-管控要点列表
     *
     * @param dictId
     * @return
     * @throws BizException
     */
    List<SafetyDangerDictControlDTO> dictControlList(Integer dictId) throws BizException;

    /**
     * 危大工程台账统计
     *
     * @param deptId
     * @return
     * @throws BizException
     */
    DangerStatisticalDTO dangerStatistical(Integer deptId) throws BizException;

    /**
     * 危大工程台账列表
     *
     * @param deptId
     * @param state
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<SafetyDangerDTO> dangerList(Integer deptId, Integer state, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 危大工程台账导出
     *
     * @param deptId
     * @param state
     * @throws BizException
     */
    void exportDanger(Integer deptId, Integer state) throws BizException;


    /**
     * 新建危大工程台账
     *
     * @param param
     * @throws BizException
     */
    void addDanger(SafetyDangerAddParam param) throws BizException;

    /**
     * 修改危大工程台账
     *
     * @param param
     * @throws BizException
     */
    void editDanger(SafetyDangerEditParam param) throws BizException;

    /**
     * 删除危大工程台账
     *
     * @param dangerId
     * @throws BizException
     */
    void delDanger(Integer dangerId) throws BizException;

    /**
     * 查询当前进度、施工旁站、一般验收、排查记录
     *
     * @param dangerId
     * @param type
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<SafetyDangerExtDTO> dangerExt(Integer dangerId, Integer type, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 添加当前进度、施工旁站、一般验收、排查记录
     *
     * @param param
     * @throws BizException
     */
    void dangerAddExt(SafetyDangerAddExtParam param) throws BizException;

    /**
     * 修改当前进度、施工旁站、一般验收、排查记录
     *
     * @param param
     * @throws BizException
     */
    void dangerEditExt(SafetyDangerEditExtParam param) throws BizException;

    /**
     * 删除当前进度、施工旁站、一般验收、排查记录
     *
     * @param dangerId
     * @param extId
     * @param type
     * @throws BizException
     */
    void dangerExtDel(Integer dangerId, Integer extId, Integer type) throws BizException;

    /**
     * 危大文件列表
     *
     * @param dangerId
     * @return
     * @throws BizException
     */
    List<SafetyDangerAcceptDTO> dangerAttachList(Integer dangerId) throws BizException;

    /**
     * 删除危大文件
     *
     * @param attachId
     * @throws BizException
     */
    void dangerAttachDel(Integer attachId) throws BizException;

    /**
     * 保存危大文件
     *
     * @param param
     * @throws BizException
     */
    void dangerAttachSave(SafetyDangerAttachSaveParam param) throws BizException;

    /**
     * 添加隐患问题
     *
     * @param param
     * @throws BizException
     */
    void dangerCheckAdd(SafetyDangerCheckAddParam param) throws BizException;


    /**
     * 问题隐患统计
     *
     * @param dangerId
     * @return
     * @throws BizException
     */
    SafetyDangerCheckNumDTO dangerCheckNum(Integer dangerId) throws BizException;

    /**
     * 问题隐患列表
     *
     * @param dangerId
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<SafetyCheckDTO> dangerCheckList(Integer dangerId, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 问题隐患详情
     *
     * @param checkId
     * @return
     * @throws BizException
     */
    SafetyCheckDescDTO dangerCheckDesc(Integer checkId) throws BizException;


    /**
     * 删除问题隐患
     *
     * @param dangerId
     * @param checkId
     * @throws BizException
     */
    void dangerCheckDel(Integer dangerId, Integer checkId) throws BizException;

    /**
     * 验收表验收列表
     *
     * @param dangerId
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<SafetyDangerAcceptDTO> dangerAcceptList(Integer dangerId, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 保存验收表验收文件
     *
     * @param param
     * @throws BizException
     */
    void dangerAcceptSave(SafetyDangerAttachSaveParam param) throws BizException;

    /**
     * 完成验收表验收
     *
     * @param dangerId
     * @throws BizException
     */
    void dangerComplete(Integer dangerId) throws BizException;

    /**
     * 管控要点
     *
     * @param dangerId
     * @return
     * @throws BizException
     */
    List<SafetyDangerControlDTO> dangerControlList(Integer dangerId) throws BizException;

    /**
     * 提交管控要点
     *
     * @param param
     * @throws BizException
     */
    void dangerControlComplete(SafetyDangerControlCompleteParam param) throws BizException;


    /**
     * 查询超时危大信息
     *
     * @return
     * @throws BizException
     */
    List<Integer> getDangerIds() throws BizException;

    /**
     * 更新超期状态
     *
     * @param dangerIds
     * @throws BizException
     */
    void updateOverdue(List<Integer> dangerIds) throws BizException;
}
